Communication systems use channel coding to improve reliability of data transmission and ensure communication quality. Polar code is a coding manner that can theoretically achieve Shannon capacity and that has simple encoding and decoding algorithms. A polar code is a type of linear block code. A generator matrix of the polar code is GN, and a coding process of the polar code is:x1N=u1NGN where x1N is an N-bit ouput sequence of the coding process, u1N=(u1, u2, K, uN) is an N-bit binary row vector, N=2n is a mother code length, n is a positive integer, K is a quantity of information bits (K≤N), GN is a N row×N column matrix, GN=F2⊗(log2(N)). F2 is a 2×2 matrix
      F    2    =            [                                    1                                0                                                1                                1                              ]        .                  ⁢          F      2              ⊗                  (                                    log              2                        ⁡                          (              N              )                                )                    is a Kronecker product of F2, and F⊗(log2(N))=F⊗F⊗((log2N))−1).
During a polar coding process, some bits in u1N are used to carry information, and these bits are referred to as information bits. In u1N, each bit has a sequence number (or called index). A set of sequence numbers of the information bits is denoted as A. Other bits in u1N are set to a fixed value that is pre-agreed upon between a receive end (receiving device) and a transmit end (transmitting device), and they are referred to as fixed bits. A set of sequence numbers of the fixed bits is represented by a complementary set Ac of A. Without loss of generality, the fixed bits are usually set to zero. Actually, as long as the receive end and the transmit end pre-agree with each other, the fixed bits can be set to any value. Therefore, a coded bit sequence, i.e. a polar code, may be obtained by using x1N=uAGN(A), where uA is a set of information bits in u1N, and uA is a row vector having a length of K. In other words, |A|=K, where |⋅| indicates a quantity of elements in a set, and K indicates a quantity of elements in the set A. GN(A) is a submatrix of GN, and GN(A) is obtained by taking K rows of GN corresponding to K indexes of the information bits in the set A. GN(A) is a matrix of K rows×N columns.
Several polar coding schemes have been developed based on the above basic polar coding process. For example, by using a CRC (Cyclic Redundancy Check)-aided enhanced SC (successive cancellation) decoding algorithm, the polar code may achieve FER (false alarm ratio) performance superior to low density parity check (LDPC) and Turbo codes.
In the prior art, to support all combinations of code lengths and code rates required by a system, a large quantity of mother code sequences need to be stored, and therefore storage overheads of the system can be very large.